﻿namespace OPCKepware
{
    using System;
    using System.Diagnostics;
    using System.IO;
    using System.Reflection;
    using System.Runtime.InteropServices;

    public class KanBan
    {
        public static bool b子站有下挂PLC = false;
        public static 本地计算机信息 my本地计算机信息;
        public static 本地计算机信息[] my系统管辖范围内计算机信息;
        public static bool PingComplete = false;
        public static bool Ping服务器1完成 = false;
        public static bool Ping服务器2完成 = false;
        public static string sKEPServerExAllName = @"C:\Program Files (x86)\KEPServerEx\servermain.exe";
        public static string sMES错误信息 = "";
        public static string SPC数据库名称 = "SPC_NEW_YC";
        public static string s测试模式 = "虚拟调试";
        public static string s产品选择结果 = "";
        public static string s服务器1通信状态 = "";
        public static string s服务器2通信状态 = "";
        public static string s间隔符 = "*********************************************************************************************************************";
        public static string s数据库密码 = "vadsuoewrwqazx";
        public static string s系统错误 = "";
        public static string 数据库名称 = "GY_AMS_DB";
        public static string 虚拟调试计算机名 = "CCP";

        [DllImport("wininet")]
        private static extern bool InternetGetConnectedState(out int connectionDescription, int reservedValue);
        [DllImport("user32.dll", SetLastError=true)]
        private static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);
        public static void 初始化本地计算机信息()
        {
            my本地计算机信息.s本地CPU序号 = OPCKepware.ComputerInfo.GetLocalCPUSN();
            my本地计算机信息.s本地硬盘序号 = OPCKepware.ComputerInfo.GetLocalDVSN();
            my本地计算机信息.s本地MAC = OPCKepware.ComputerInfo.GetLocalMac();
        }

        public static void 初始化本地计算机信息OLD()
        {
            Process process = new Process();
            Stopwatch stopwatch = new Stopwatch();
            bool flag = false;
            stopwatch.Start();
            while (true)
            {
                int num;
                string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
                string str = directoryName.Substring(6, directoryName.Length - 6) + @"\MES提示窗体.exe";
                if (stopwatch.Elapsed.TotalSeconds > 10.0)
                {
                    stopwatch.Stop();
                    if (!flag)
                    {
                        process.StartInfo.FileName = str;
                        process.StartInfo.UseShellExecute = false;
                        process.StartInfo.RedirectStandardInput = true;
                        process.StartInfo.RedirectStandardOutput = true;
                        process.StartInfo.RedirectStandardError = true;
                        process.Start();
                        flag = true;
                    }
                }
                if (InternetGetConnectedState(out num, 0))
                {
                    OPCKepware.MyFlie.WriteLog("已联网");
                    my本地计算机信息.s本地CPU序号 = OPCKepware.ComputerInfo.GetLocalCPUSN();
                    my本地计算机信息.s本地硬盘序号 = OPCKepware.ComputerInfo.GetLocalDVSN();
                    my本地计算机信息.s本地MAC = OPCKepware.ComputerInfo.GetLocalMac();
                    try
                    {
                        process.CloseMainWindow();
                    }
                    catch
                    {
                    }
                    return;
                }
            }
        }

        public static void 初始化系统管辖范围内计算机信息()
        {
        }

        public static void 初始系统所辖计算机信息()
        {
            my本地计算机信息 = new 本地计算机信息();
            my系统管辖范围内计算机信息 = new 本地计算机信息[3];
            my本地计算机信息.s本地CPU序号 = "BFEBFBFF000306D4";
            my本地计算机信息.s本地硬盘序号 = "000E77DF";
            my本地计算机信息.s本地MAC = "E4:02:9B:8F:14:61";
            my本地计算机信息.s本地IP = "192.168.1.153";
            my系统管辖范围内计算机信息[0] = my本地计算机信息;
            my本地计算机信息.s本地CPU序号 = "BFEBFBFF000306D4";
            my本地计算机信息.s本地硬盘序号 = "000E77DF";
            my本地计算机信息.s本地MAC = "E4:02:9B:8F:14:61";
            my本地计算机信息.s本地IP = "192.168.1.153";
            my系统管辖范围内计算机信息[1] = my本地计算机信息;
            my本地计算机信息.s本地CPU序号 = "BFEBFBFF000306D4";
            my本地计算机信息.s本地硬盘序号 = "000E77DF";
            my本地计算机信息.s本地MAC = "E4:02:9B:8F:14:61";
            my本地计算机信息.s本地IP = "192.168.1.153";
            my系统管辖范围内计算机信息[2] = my本地计算机信息;
        }

        public static bool 检查计算机信息()
        {
            bool flag = false;
            my本地计算机信息.s本地CPU序号 = OPCKepware.ComputerInfo.GetLocalCPUSN();
            my本地计算机信息.s本地硬盘序号 = OPCKepware.ComputerInfo.GetLocalDVSN();
            my本地计算机信息.s本地MAC = OPCKepware.ComputerInfo.GetLocalMac();
            string[] localIP = OPCKepware.ComputerInfo.GetLocalIP();
            for (int i = 0; i < my系统管辖范围内计算机信息.Length; i++)
            {
                for (int j = 0; j < localIP.Length; j++)
                {
                    //if (my系统管辖范围内计算机信息[i].s本地IP == localIP[j])
                    //{
                        flag = true;
                        j = localIP.Length;
                        i = my系统管辖范围内计算机信息.Length;
                    //}
                }
            }
            if (!flag)
            {
                OPCKepware.MyFlie.WriteLog("CPUHDMAC?");
            }
            return flag;
        }

        private void 启动提示窗体()
        {
            new Process { StartInfo = { FileName = sKEPServerExAllName, UseShellExecute = false, RedirectStandardInput = true, RedirectStandardOutput = true, RedirectStandardError = true, WindowStyle = ProcessWindowStyle.Hidden } }.Start();
        }

        [StructLayout(LayoutKind.Sequential)]
        public struct 本地计算机信息
        {
            public string s本地CPU序号;
            public string s本地硬盘序号;
            public string s本地MAC;
            public string s本地IP;
        }
    }
}

